package com.payment.system.mapper;

import com.payment.common.annotation.DataSource;
import com.payment.common.enums.DataSourceType;
import com.payment.system.domain.MerchantIncreaseLimit;
import com.payment.system.vo.CreditCardVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 商户信用卡 数据层
 *
 * @author payment
 * @date 2018-12-31
 */
public interface MerchantIncreaseLimitMapper {
    /**
     * 查询商户信用卡信息
     *
     * @param iD 商户信用卡ID
     * @return 商户信用卡信息
     */
    @DataSource(DataSourceType.SLAVE)
    public MerchantIncreaseLimit selectMerchantIncreaseLimitById(String iD);

    /**
     * 查询商户信用卡列表
     *
     * @param merchantIncreaseLimit 商户信用卡信息
     * @return 商户信用卡集合
     */
    @DataSource(DataSourceType.SLAVE)
    public List<MerchantIncreaseLimit> selectMerchantIncreaseLimitList(MerchantIncreaseLimit merchantIncreaseLimit);

    /**
     * 新增商户信用卡
     *
     * @param merchantIncreaseLimit 商户信用卡信息
     * @return 结果
     */
    public int insertMerchantIncreaseLimit(MerchantIncreaseLimit merchantIncreaseLimit);

    /**
     * 修改商户信用卡
     *
     * @param merchantIncreaseLimit 商户信用卡信息
     * @return 结果
     */
    public int updateMerchantIncreaseLimit(MerchantIncreaseLimit merchantIncreaseLimit);

    /**
     * 删除商户信用卡
     *
     * @param iD 商户信用卡ID
     * @return 结果
     */
    public int deleteMerchantIncreaseLimitById(String iD);

    /**
     * 批量删除商户信用卡
     *
     * @param iDs 需要删除的数据ID
     * @return 结果
     */
    public int deleteMerchantIncreaseLimitByIds(String[] iDs);

    /**
     * 自定义查询商户信用卡详情
     *
     * @param id
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    MerchantIncreaseLimit selectMerchantDetailById(String id);

    //app获取信用卡列表
    @DataSource(DataSourceType.SLAVE)
    List<CreditCardVo> selectCreditCardVoByMerchantId(@Param("merchantId") String merchantId);

    ////app 端 获取信用卡信息
    @DataSource(DataSourceType.SLAVE)
    CreditCardVo selectCardVoById(@Param("cardId") String cardId);

    //根据用户id 信用卡号 查询信用卡信息
    @DataSource(DataSourceType.SLAVE)
    MerchantIncreaseLimit selectCreditCardByCardIdAndMerchantId(@Param("cardId") String cardId, @Param("merchantId") String merchantId);

    //根据用户id 获取信用卡列表
    @DataSource(DataSourceType.SLAVE)
    List<MerchantIncreaseLimit> selectMerchantIncreaseLimitByMerchantId(@Param("merchantId")String merchantId);

    @DataSource(DataSourceType.SLAVE)
	public MerchantIncreaseLimit selectByBankAccount(String bankCount);
	/**
	 * 根据通道查开通的信用卡列表
	 * @param merId
	 * @param acqId
	 * @return
	 */
    @DataSource(DataSourceType.SLAVE)
	public List<Map<String, String>> selectMerchantIncreaseLimitByMerchantIdAndAcqId(@Param("merId")String merId,@Param("acqId") String acqId);
	/**
	 * 根据卡号查找是否存在信用卡
	 * @param bankAccount
	 * @return
	 */
    @DataSource(DataSourceType.SLAVE)
	public List<MerchantIncreaseLimit> selectCreditCardByCardNumber(@Param("bankAccount")String bankAccount);

	public List<CreditCardVo> selectCreditCardVoByMerchantIdAndAcqIds(@Param("merchantId")String merchantId,@Param("acqIds") String[] acqIds,
			@Param("cardId")String cardId);

    /**
     * 查询所有的信用卡id
     * @return
     */
	List<MerchantIncreaseLimit> selectAll();
	/**
	 * 根据用户id获取绑定几张卡
	 * @param merchantId
	 * @return
	 */
	public long selectCountByMerchantId(@Param("merchantId")String merchantId);
}